#!/usr/bin/env python3
# -*- coding: utf-8 -*-


from selenium import webdriver
import time, random
from selenium.webdriver.common.action_chains import ActionChains  # ActionChains包含了所有的交互


class InfiniteBarrageApp():

    def __init__(self):  # 初始化
        # self.url = input('请你输入直播房间链接地址:')
        self.url = 'https://www.huya.com/147315'  # 直播间地址
        self.driver = webdriver.Chrome()
        self.username = '13168837959'
        self.password = 'iphone13253689303'

    def login(self):  # 自动登录
        # 1 控制浏览器进入直播房间
        # self.driver.get(url=self.url)
        # 2 查询登录标签
        time.sleep(3)  # #J_RoomChatSpeaker
        login_btn = self.driver.find_element_by_id('J_RoomChatSpeaker')
        # 3 触发点击时间
        login_btn.click()
        # 4 登录子页面：延迟2秒
        time.sleep(2)
        # 5 切换到iframe网页：进入到另外一个网页
        self.driver.switch_to.frame('UDBSdkLgn_iframe')
        # 6 self.driver里面的内容就切换成了frame内容，不再是主页面
        #   查询登录页面的用户、密码、提交按钮标签
        username = self.driver.find_element_by_xpath('//*[@id="account-login-form"]/div[1]/input')
        password = self.driver.find_element_by_xpath('//*[@id="account-login-form"]/div[2]/input')

        login = self.driver.find_element_by_xpath('//*[@id="login-btn"]')

        # 7 元素交互
        username.send_keys(self.username)
        password.send_keys(self.password)

        login.click()

        # 8 登录成功，会重新加载页面：睡眠3秒
        time.sleep(3)

        # 8 切换到主页面：直播房间页面
        self.driver.switch_to.default_content()

        pass

    def sendBarrage(self):  # 发送弹幕
        # 1 弹幕列表
        danmu_list = [
            '刘子正:主播小姐姐，我支持你',
            '刘子正:主播实力很强啊',
            '刘子正:我要相亲，给我女朋友',
            '刘子正:能我给像个亲吗？'
        ]

        # 2 死循环
        index = 1
        while True:
            # 3 弹幕发送频繁：禁锢发送
            time.sleep(10)
            # 4 随机弹幕
            danmu = danmu_list[random.randint(0, len(danmu_list) - 1)]
            # 5 查询弹幕输入框和发送
            self.driver.find_element_by_id('pub_msg_input').send_keys(danmu)
            self.driver.find_element_by_id('msg_send_bt').click()

            # 6 判断超出多少次：打断
            index += 1
            if index == 20:
                break

        # 7 退出
        time.sleep(60)
        self.driver.quit()

    def run_web(self):
        self.driver.get(url=self.url)

    def run(self):  # 入口
        self.run_web()
        self.login()
        self.sendBarrage()


# 实例化对象
app = InfiniteBarrageApp()
app.run()















